Azure Container Apps でメンテナンスウィンドウ機能がプレビュー提供されていたので構成してみた
いわさです。
Azure Container Apps を検証する機会があったのですが、少し前のアップデートでメンテナンスウィンドウを設定できる機能がプレビューとして提供されていることを発見しました。
プレビューなので運用環境での採用はまだ難しそうですが、どの程度柔軟に設定出来るのかなどを知っておきたかったので試してみることにしました。
そのままですが、この機能を使うと計画的なメンテナンス作業の時間帯を指定できるようになります。
Container Apps では通常は定期的かつ自動的にプラットフォームとインフラストラクチャへ更新が適用されます。その際にはパフォーマンス影響が最小限に抑えるように設計されています。
一方で、メンテナンスはワークロードのピーク時間を避けて欲しい、更新に伴う障害リスクを少しでも避けたい。というニーズもあると思います。
Azure SQL Database などではメンテナンス期間の指定が出来るのですが、Container Apps でも似たような指定が今後出来るようになるようです(まだプレビュー)
ただし、更新には重要度がありまして、緊急修正プログラムのような重要な更新については今回のメンテナンス期間を待たずに適用されるみたいです。
上記以外(定期セキュリティパッチ、バグ修正、新機能)についてはメンテナンス期間内のみ更新が行われます。
設定方法
現在のプレビュー段階では、Azure CLI を使用して設定を行う必要があるようです。
az containerapp env maintenance-config
コマンドを使います。
Container Apps 作成直後は未設定
まず、作成直後の設定値を確認してみました。
% az containerapp env maintenance-config list --resource-group hoge1231container --environment managedEnvironment-hoge1231contain-8fd4
/opt/homebrew/Cellar/azure-cli/2.67.0_1/libexec/lib/python3.12/site-packages/azure/batch/models/_models_py3.py:4839: SyntaxWarning: invalid escape sequence '\s'
"""A Job Preparation Task to run before any Tasks of the Job on any given
Preview version of extension is disabled by default for extension installation, enabled for modules without stable versions.
Please run 'az config set extension.dynamic_install_allow_preview=true or false' to config it specifically.
No stable version of 'containerapp' to install. Preview versions allowed.
The command requires the extension containerapp. It will be installed first.
No stable version of 'containerapp' to install. Preview versions allowed.
Extension 'containerapp' 0.3.53 is already installed.
It will be overridden with version 1.1.0b1.
Command group 'containerapp env maintenance-config' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
""
リソース作成直後は何も設定されていない状態ですね。
ドキュメントに記載されていますが、この状態の場合は緊急以外の更新についてもいつでも適用される可能性があります。
メンテナンス期間を追加
ではここに設定を追加してみましょう。
日本時間の日曜朝3時から4時間くらいを期間に設定してみます。要件でよくありそうな時間帯です。
% az containerapp env maintenance-config add --resource-group hoge1231container --environment managedEnvironment-hoge1231contain-8fd4 --weekday Saturday --start-hour-utc 18 --duration 4
Command group 'containerapp env maintenance-config' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Duration must be an integer from 8 to 24
設定してみたところエラーとなりました。
Duration は 8 ~ 24時間しか指定できないみたいですね。8時間はちょっと長い気がしますが仕方ない。
JST 日曜0時から8時間にしてみます。
% az containerapp env maintenance-config add --resource-group hoge1231container --environment managedEnvironment-hoge1231contain-8fd4 --weekday Saturday --start-hour-utc 15 --duration 8
Command group 'containerapp env maintenance-config' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
"id": "/subscriptions/11111111-2222-3333-4444-555555555555/resourceGroups/hoge1231container/providers/Microsoft.App/managedEnvironments/managedEnvironment-hoge1231contain-8fd4/maintenanceConfigurations/default",
"name": "default",
"properties": {
"scheduledEntries": [
{
"durationHours": 8,
"startHourUtc": 15,
"weekDay": "Saturday"
}
]
},
"resourceGroup": "hoge1231container",
"type": "Microsoft.App/managedenvironments/maintenanceConfigurations"
}
設定出来ました。
先ほど確認出来なかったコマンドでも確認が出来るようになりました。
% az containerapp env maintenance-config list --resource-group hoge1231container --environment managedEnvironment-hoge1231contain-8fd4
Command group 'containerapp env maintenance-config' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
"id": "/subscriptions/11111111-2222-3333-4444-555555555555/resourceGroups/hoge1231container/providers/Microsoft.App/managedEnvironments/managedEnvironment-hoge1231contain-8fd4/maintenanceConfigurations/default",
"name": "default",
"properties": {
"scheduledEntries": [
{
"durationHours": 8,
"startHourUtc": 15,
"weekDay": "Saturday"
}
]
},
"resourceGroup": "hoge1231container",
"type": "Microsoft.App/managedenvironments/maintenanceConfigurations"
}
ポータルでは確認できない
残念ながら本日時点では Azure ポータル上で設定が確認出来ないようでした。
作成後に App、Environment ともに構成値がなく、ARM テンプレート上にも設定が含まれていません。
Container App Environment の構成画面
料金について
また、現在のプレビュー段階では、本機能は無料で利用可能です。
ただし、公式ドキュメント・アナウンスともに「計画メンテナンスはプレビュー期間中は無料」と明記されており、GA 時の変更可能性が示唆されています。
さいごに
本日は Azure Container Apps でメンテナンスウィンドウ機能がプレビュー提供されていたので構成してみました。
1 ヶ月ほど放置してアップデートの様子を観察してみたいと思います。
メンテナンスはマネージドで良い感じにやっておいてほしい反面、どうしてもリスクを回避したいイベントがあってメンテナンスタイミングをコントロールしたいケースはあると思うので、本機能はなかなか重要な機能だと思ってます。
現在はプレビュー段階で機能が限定的ですが、GA 時にはポータルからの設定や確認など、より使いやすい機能として提供されると良いですね。料金がどうなるかちょっと気になるところ。